# # 1、已知：在一段程序中，用列表保存几个用户名，例如：[‘xiaoxifeng’, ‘cangcang’, ‘tom’]
# # 要求：通过终端输入新的用户名，判断所输入的用户名是否为已经设置好的用户名并且对判断结果给出友好的提示。
# # 如果不是，允许用户多次尝试输入，直到正确为止。
# "代码："
# lst = ['xiaoxifeng', 'cangcang', 'tom']     #创建列表存储用户名
# while True :                                #一直循环
#     name = input("")                        #获取用户名
#     if name in lst :                        #判断获得的用户名是否位于列表中
#         print("欢迎")                        #如果是，打印“欢迎”并终止循环
#         break
#     else :                                  #不时的话，继续获得用户名
#         continue
#
#
#
# # 2、已知：字符串a = "aAsmr3idd4bgs7Dlsf9eAF"，
# # 要求：编写程序，完成如下任务：
# # a)请将字符串中的数字取出，并输出成一个新的字符串。
# # b)请统计字符串出现的每个字母的出现次数（忽略大小写，a与A是同一个字母），并输出成一个字典。
# # 例 {'a':3,'b':1}
# # c)请去除字符串多次出现的字母，不区分大小写。例 'aAsmr3idd4bgs7Dlsf9eAF'，经过去除后，
# # 输出 'asmr3id4bg7lf9e'
#
# '代码：'
# a = "aAsmr3idd4bgs7Dlsf9eAF"
# number = []                         #创建一个空的列表，用以储存a中的数字
# for i in a :                        #循环遍历a中的单个字符
#     if i.isdigit():                 #判断某一字符是否为数字
#         number.insert(0,i)  #将数字存储于number列表中
# print("a)题结果：","".join(number))              #将列表转化为字符串输出
#
# dict1 = {}                          #创建一个空字典
# new_a = a.upper()                   #将字母全部大写，忽略大小写
# for i in new_a :                    #循环遍历
#     value = int(new_a.count(i))     #将单个字符i出现的次数作为字典的值
#     key = i                         #将单个字符i作为字典的键
#     dict1[key] = value              #向dict1中添加键和值
# print("b)题结果：",dict1)                        #打印
#
# key1=dict1.keys()                   #获得dict1中的键，让每个字符只出现一次
# no_repeated=[]                      #创建一个空列表，储存字符
# for key in key1 :                   #循环遍历
#     no_repeated.insert(0,key) #将不重复的字符加入到列表中
# print("c)题结果：","".join(no_repeated))         #将列表转化为字符串并打印


# 3、打印出所有的“水仙花数”，所谓“水仙花数”是指一个三位数，其各位数字立方和等于该数本身。
# 例如：153是一个“水仙花数”，
# 因为153=1的三次方＋5的三次方＋3的三次方。
#             方法一：
# for i in range(100,1000):
#     str_i = str(i)          #转化为字符串，以便后续取单个数字
#     g = int(str_i[2])       #取个位
#     s = int(str_i[1])       #取十位
#     b = int(str_i[0])       #取百位
#     if i == g**3+s**3+b**3 :    #判断是否满足水仙花数的条件
#         print(i)
#     # 方法二
# for i in range(100,1000):
#     g = i % 10              # 取个位
#     s = i // 10 % 10        #取十位
#     b = i // 100            #取百位
#     if i == g ** 3 + s ** 3 + b ** 3:  # 判断是否满足水仙花数的条件
#          print(i)





# # 4、编写程序，实现猜数游戏。在程序中预设一个0~99之间的整数，让用户通过键盘输入所猜的数字，如果大于预设的数字，
# # 显示“太大了，请继续猜！”；如果小于预设的数字，显示“太小了，请继续猜！”；
# # 如此循环，直至猜中该数字，显示“预测N次，猜中了！”，其中N是用户输入字数的次数。
# # 说明：例如，假定预设数字为51，用户输入67，打印出信息“太大了，请继续猜！”；
# # 提示：获取用户键盘输入请查询eval()函数和input()函数的用法。
# a = 51                    #需要猜测的数
# time = 0				#猜测的次数
# while True :			#一直循环
#     guess_number = int(input())		#获得用户猜测的数
#     time += 1			#次数加1
#     if guess_number == a :		#如果猜中，显示“预测N次，猜中了！”终止程序
#         print(f'预测{time}次，猜中了!')
#         break
#     elif guess_number < a :		#如果猜小了，显示"太小了，请继续猜!"继续程序
#         print("太小了，请继续猜!")
#         continue
#     elif guess_number > a :		#如果猜大了，显示"太大了，请继续猜!"继续程序
#         print("太大了，请继续猜!")
#         continue

# # # 5、编写程序，实现如下图所示的数字金字塔。
# hangshu = int(input('请输入一个行数（1-15之间）：'))
# for i in range(0,hangshu+1):            #确定一行中最大的数
#     print(" "*(hangshu - i),end="")     #打印空格数，且不换行
#     if i>1:                             #当行数超过一时
#         for k in range(i,1,-1):         #倒序打印
#             print(k,end=" ")
#     for a in range(1,i+1):              #正序打印
#         print(a,end=" ")
#     print()                             #换行

hangshu = int(input('请输入一个行数（1-15之间）：'))
for i in range(0,hangshu+1) :               #确定第几行
    print(" "*(hangshu - i ),end=" ")       #打印数字前的空格，使其对齐
    for k in range(i,1,-1):                 #倒序打印
        print(k,end=" ")
    for j in range(1,i+1):                  #正序打印
        print(j,end=" ")
    print()                                 #换行




